package it.polimi.traveldream.persistence;

import java.io.Serializable;

import javax.persistence.*;

import java.util.LinkedList;
import java.util.List;


/**
 * The persistent class for the tratta_volo database table.
 * 
 */
@Entity
@Table(name="tratta_volo")
@NamedQuery(name="TrattaVolo.findAll", query="SELECT t FROM TrattaVolo t")
public class TrattaVolo implements Serializable {
	private static final long serialVersionUID = 1L;

	public static final String FIND_ALL = "TrattaVolo.findAll";

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int IDTratta;

	//bi-directional many-to-one association to PrenotazioneVolo
	@OneToMany(mappedBy="trattaVolo")
	private List<PrenotazioneVolo> prenotazioniVoli= new LinkedList<PrenotazioneVolo>();

	//bi-directional many-to-one association to Aeroporto
	@ManyToOne
	@JoinColumn(name="Da")
	private Aeroporto daAeroporto;

	//bi-directional many-to-one association to Aeroporto
	@ManyToOne
	@JoinColumn(name="A")
	private Aeroporto adAeroporto;

	//bi-directional many-to-one association to Compagnia
	@ManyToOne
	@JoinColumn(name="IDCompagnia")
	private Compagnia compagnia;

	//bi-directional many-to-one association to PonteTrattaPacchetto
	@OneToMany(mappedBy="trattaVolo")
	private List<PonteTrattaPacchetto> ponteTrattaPacchettos= new LinkedList<PonteTrattaPacchetto>();

	//bi-directional many-to-one association to Utente
	@ManyToOne
	@JoinColumn(name="EmailImpiegato")
	private Utente utente;

	public TrattaVolo() {
	}

	public int getIDTratta() {
		return this.IDTratta;
	}

	public void setIDTratta(int IDTratta) {
		this.IDTratta = IDTratta;
	}

	public List<PrenotazioneVolo> getPrenotazioneVoli() {
		return this.prenotazioniVoli;
	}

	public void setPrenotazioneVoloi(List<PrenotazioneVolo> prenotazioneVolos) {
		this.prenotazioniVoli = prenotazioneVolos;
	}

	public PrenotazioneVolo addPrenotazioneVolo(PrenotazioneVolo prenotazioneVolo) {
		getPrenotazioneVoli().add(prenotazioneVolo);
		prenotazioneVolo.setTrattaVolo(this);

		return prenotazioneVolo;
	}

	public PrenotazioneVolo removePrenotazioneVolo(PrenotazioneVolo prenotazioneVolo) {
		getPrenotazioneVoli().remove(prenotazioneVolo);
		prenotazioneVolo.setTrattaVolo(null);

		return prenotazioneVolo;
	}

	public Aeroporto getDaAeroporto() {
		return this.daAeroporto;
	}

	public void setDaAeroporto(Aeroporto daAeroporto) {
		this.daAeroporto = daAeroporto;
	}

	public Aeroporto getAdAeroporto() {
		return this.adAeroporto;
	}

	public void setAdAeroporto(Aeroporto aeroporto2) {
		this.adAeroporto = aeroporto2;
	}

	public Compagnia getCompagnia() {
		return this.compagnia;
	}

	public void setCompagnia(Compagnia compagnia) {
		this.compagnia = compagnia;
	}

	public List<PonteTrattaPacchetto> getPonteTrattaPacchettos() {
		return this.ponteTrattaPacchettos;
	}

	public void setPonteTrattaPacchettos(List<PonteTrattaPacchetto> ponteTrattaPacchettos) {
		this.ponteTrattaPacchettos = ponteTrattaPacchettos;
	}

	public PonteTrattaPacchetto addPonteTrattaPacchetto(PonteTrattaPacchetto ponteTrattaPacchetto) {
		getPonteTrattaPacchettos().add(ponteTrattaPacchetto);
		ponteTrattaPacchetto.setTrattaVolo(this);

		return ponteTrattaPacchetto;
	}

	public PonteTrattaPacchetto removePonteTrattaPacchetto(PonteTrattaPacchetto ponteTrattaPacchetto) {
		getPonteTrattaPacchettos().remove(ponteTrattaPacchetto);
		ponteTrattaPacchetto.setTrattaVolo(null);

		return ponteTrattaPacchetto;
	}

	public Utente getUtente() {
		return this.utente;
	}

	public void setUtente(Utente utente) {
		this.utente = utente;
	}

}